#include <stdlib.h>
#include "HashALU.h"
#include "ListaAlumno.h"
#include "Alumno.h"


HashALU* crear_HashALU(int numEntradas){
    HashALU* hash = malloc(sizeof(HashALU));
    hash->numEntradas = numEntradas;
    hash->entradas = malloc(numEntradas * sizeof(ListaAlumno));
    int i;
    for (i=0; i<numEntradas; i++){
        hash->entradas[i] = nueva_ListaAlumno();
    }
    return hash;
}

void inserta_HashALU(HashALU* hash, Alumno* alumno){
    int indice = alumno->codigo % hash->numEntradas;    
    insertarFinal_ListaAlumno(&(hash->entradas[indice]),alumno);
}

Alumno* buscar_HashALU(HashALU* hash, int cod){
    int indice = cod % hash->numEntradas; 
    ListaAlumno lista = hash->entradas[indice];
    NodoListaAlumno* i = NULL;
    for (i = lista.ini;i!=NULL  && i->alumno->codigo != cod ; i = i->sig);
    if(i==NULL) return NULL;
    return (i->alumno);
}

void imprimir_HashALU(HashALU* h){
    int i;
    
    for (i=0; i < h->numEntradas; i++){
        printf("\n->Hash %d:\n",i);
        imprimir_ListaAlumno(&(h->entradas[i]));
        printf("\n<-\n");
    }
}
